Visual Basic之父回忆往事
Alan Cooper ,“VB之父”“交互设计之父”,荣获视窗先锋奖(Microsoft Windows Pioneer)和软件梦幻奖(Software Visionary),他创建了Cooper交互设计公司,此公司一直致力于创建专为用户而设计的应用软件。
以下为译文:
自从我的公司库柏(Cooper)换了新老板之后,两年来我发现自己在库柏网站上发布的一些个人信息被悄悄删除了。其中之一是我在1995年写的一篇文章,它讲述了Visual Basic的起源故事。这是一段刻骨铭心的、引人入胜的历史,所以我想在这里重新发布,与25年前的原始版本没有任何变化。
VB有史以来出版的第一本书,名为《Visual Basic操作指南》(现在已经出了第二版,由Waite集团出版社出版)。Mitchell Waite在书的前言中称我为“Visual Basic之父”,我很喜欢这个称呼,在我的个人传记中经常引用它。
在20世纪80年代,我主要编写软件,然后卖给软件公司。1986年,我选择了微软Windows平台。它不仅支持所有预期的GUI功能,还有一个独特的、令人满意的特性:使用动态链接库(DLL),您可以动态创建配置工具。当我得知这一消息时,我感觉Windows会有一个远大的未来。不过我还了解到另一个事实:它的shell程序很糟糕。
在业余时间里,我开始写一个比Windows更好的shell程序。我叫它“Tripod”。微软最初的shell,叫做MSDOS.EXE,它可以说是Windows发展的绊脚石之一。我试图通过Tripod实现更容易的使用和配置。但直到1987年底,我与客户见面时,才突然想到了Tripod的关键设计策略。当信息技术部经理向我解释他需要为不同的用户群创建和发布各种shell解决方案时,我意识到一个难题:没有所谓的理想shell。每个用户都需要特定的shell,根据自己的需要和技能水平进行配置。那一瞬间,我看到了shell设计问题的解决方案: 构建一个shell工具集。在这个工具集中,每个用户都能够构建他们所需的shell,以满足他们独特的应用程序。我不用告诉用户理想的shell是什么,他们可以设计自己的、个性化的理想shell。
一旦确定了设计愿景,设计的细节就相对容易了。用户将通过一个工具面板,创建“表单”并使用工具实例。工具集既包括标准控件,如列表框和按钮,还包括特殊的、扩展功能的shell,如自动显示目录内容的列表框。
我开始研究这个新版本的Tripod,大概几个月后初具雏形。其突出的一个特性是,界面完全可以通过拖放操作。用户可以将两个控件(我称之为gizmo)连接在一起,方法是右键单击并从一个gizmo拖动到另一个gizmo。通过一个可视化的箭头将一个gizmo事件和另一个gizmo方法逻辑地连接起来。后来,微软放弃了箭头,但保留了事件/方法模型。
我开始在这个行业里展示Tripod。硅谷的许多公司都看到了这一点,但很少有人表示出真正的兴趣。在1988年3月,我把这个模型展示给比尔·盖茨,他觉得这很“酷”,而且很有潜力,会对整个产品线产生重大影响。在接下来的几个月里,我们敲定了一笔交易。很快Tripod这个名字曝光率很高,我们就把它改成了“Ruby”。与此同时,我召集了一批程序员精英来构建更高质量的发布版本。
这个团队由马克·默克、加里·克瑞金、迈克·吉尔里和弗兰克·拉布组成。我们做的第一件事是扔掉旧的原型代码,重新开始。尽管它已经超过25000行C代码,还包含了许多有价值的想法。在接下来的18个月里,整个团队努力工作,功夫不负有心人,最终开发完成了Ruby。我们的产品经过了微软质量保证团队的审核,并于1990年初完成提交。
Ruby产品在软件设计方面体现了许多重要的进步,其中有两个特别成功。正如我提到的,Windows的动态链接功能一直吸引着我,但是拥有这些工具和知道如何使用它们是两码事。使用Ruby,我终于发现了动态链接的两种实际用途:首先,它是可安装的,并且可以动态扩展。其次,gizmos的面板可以动态添加。
Ruby附带了一种小型语言——用于执行shell程序的十几条简单命令。但是,这种语言是作为dll实现的,可以在运行时安装。从最初的讨论开始,我和微软就有了发展这种语言的想法,甚至想用一种“真正的”语言完全取代它。C语言是最常被提到的候选语言,但最终,微软将其完全替换为QuickBasic。这种语言与前端的新结合是静态的、永久性的。
在设计过程的早期,我萌生了gizmo动态化的想法。我设想了这样一个产品:第三方供应商可以编写自己的gizmo dll,用户可以将它们添加到特定领域的产品中,而无需重新编译。我们定义了一个Ruby接口,可以查询环境中的可执行文件。如果文件响应正确,Ruby就知道它是另一个协作的gizmo,并请求在工具面板中显示。这个接口最终被称为VBX。据我所知,这是第一次在操作系统之外实际使用Windows的动态链接功能。它的成功充分证明了我的想法和设计是正确的。
因为微软拥有Ruby的专有权,所以他们可以随心所欲地使用。最初的意图是将它作为一个更强大和更复杂的新shell与Windows 3.0一起发布,就像现在的Windows 95一样。然而,微软决定推迟发布Ruby,其shell与当时微软拥有的OS|2的shell几乎一模一样;并通过添加QuickBasic将其从面向所有Windows用户的shell构造集转换为面向专业程序员的可视化编程语言。一开始,我对微软的决定感到非常沮丧,并提出了反对意见。然而,最终产品的强大功能给我留下了深刻的印象,很快我就成为了Visual Basic的热情支持者。
在我从事Ruby开发的所有时间里,我与微软签订了严格的保密协议,不能告诉任何人我在做什么。在将近四年的时间里,我一直保持沉默,尽管我知道Ruby会改变编程领域。VB发布后不久,我的朋友Mitchell Waite打电话给我,问我是不是VB中提到的那个Cooper。我承认是我,他邀请我吃午饭,我们在旧金山见面,我向他讲述了我的故事。当我讲完时,他惊讶地看着我说:“你成为了Visual Basic之父!”
我有两个儿子,一个9岁,一个10岁。虽然我在他们成长的过程中起了很大的作用,但他们都有独立思考的能力。当我看着他们以自己的方式成长,并对自己的生活做出自己的决定时,我明白了做一个父亲的真正含义。同时,我骄傲的成为VB之父,就像儿子的父亲那样,看着它一步步成长、成熟,最终创造出一种属于自己的文化。
1994年5月,在亚特兰大举行的Windows世界大会上,比尔·盖茨颁发了7个Windows先锋奖,其中一个奖项是为了表彰我成功创建了Visual Basic。我感到非常的荣幸!
【End】
热 文 推 荐